package com.kbcss.web;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//import daoImpl.MakeConnection;

import java.sql.*;

/**
 * Servlet implementation class UploadPic
 */
public class UploadPic extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public UploadPic() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
			System.out.println("********************************1");
			HttpSession hs=request.getSession();
			String uid=(String)hs.getAttribute("id");
			//int userid=Integer.parseInt(uid);
			String saveFile="";
			String contentType = request.getContentType();
			if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
			DataInputStream in = new DataInputStream(request.getInputStream());
			int formDataLength = request.getContentLength();
			byte dataBytes[] = new byte[formDataLength];
			int byteRead = 0;
			int totalBytesRead = 0;
			while (totalBytesRead < formDataLength) {
			byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
			totalBytesRead += byteRead;
			}
			String file = new String(dataBytes);
			saveFile = file.substring(file.indexOf("filename=\"") + 10);
			saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
			saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
			int lastIndex = contentType.lastIndexOf("=");
			String boundary = contentType.substring(lastIndex + 1,contentType.length());
			int pos;
			pos = file.indexOf("filename=\"");
			pos = file.indexOf("\n", pos) + 1;
			pos = file.indexOf("\n", pos) + 1;
			pos = file.indexOf("\n", pos) + 1;
			int boundaryLocation = file.indexOf(boundary, pos) - 4;
			int startPos = ((file.substring(0, pos)).getBytes()).length;
			int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
			File ff = new File(saveFile);
			FileOutputStream fileOut = new FileOutputStream(ff);
			fileOut.write(dataBytes, startPos, (endPos - startPos));
			fileOut.flush();
			fileOut.close();
			//MakeConnection mc=new MakeConnection();
			//Connection con = null;
			ResultSet rs=null;
			PreparedStatement pstmt = null;
			FileInputStream fis;
			try {
				Class.forName("com.mysql.jdbc.Driver");
			     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/kbcssdb", "root", "mysql");
				File f = new File(saveFile);
				fis = new FileInputStream(f);
				//pstmt = con.prepareStatement("SELECT COUNT(*) FROM IMAGE WHERE USERID=?");
				//pstmt.setString(1, uid);
				//rs = pstmt.executeQuery();
				//rs.next();
				//if(rs.getString(1)==null)
				//{
					PreparedStatement pstmt1=null;
					pstmt1=con.prepareStatement("INSERT INTO `IMAGE`(USERID,PIC) VALUES(?,?)");
					pstmt1.setString(1, uid);
					pstmt1.setBinaryStream(2, (InputStream)fis, (int)(f.length()));
					int xx=pstmt1.executeUpdate();
					if(xx==1){
						con.close();
						response.sendRedirect("success.html");
					//}
				}
				else{
					PreparedStatement pstmt2=null;
					pstmt2=con.prepareStatement("UPDATE `IMAGE` SET PIC=? WHERE USERID=?");
					pstmt2.setBinaryStream(1, (InputStream)fis, (int)(f.length()));
					pstmt2.setString(2, uid);
					int yy=pstmt2.executeUpdate();
					if(yy==1){
						con.close();
						response.sendRedirect("success.html");
					}
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
}
